﻿// Fence Repair POJ - 3253 训练营.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
//

#include <iostream>

/*
https://vjudge.net/problem/POJ-3253#author=GPT_zh

农夫约翰想要修理围绕牧场的一小段篱笆。他测量了篱笆的长度，发现他需要 N (1 ≤ N ≤ 20,000) 块木板，每块木板的长度为一些整数 Li (1 ≤ Li ≤ 50,000) 单位。然后他购买了一块足够长的长板，可以锯成 N 块木板（即其长度等于各个木板长度 Li 的总和）。约翰忽略了“切割损耗”，即锯木头时因锯切而损失的额外长度；你也应该忽略它。

约翰遗憾地意识到他没有锯子来切木头，于是他走到唐农场找唐农，礼貌地询问是否可以借用一把锯。

唐农是个暗中潜藏的资本家，他不借给约翰锯子，而是提议向约翰收取每次切割木板的费用。切割一块木头的费用正好等于它的长度。切割长度为21的木板需要花费21美分。

接着，唐农让约翰决定切割木板的顺序和位置。帮助约翰确定他制作 N 块木板所需的最少花费。约翰知道他可以以不同的顺序切割木板，导致不同长度的中间木板，从而产生不同的费用。

输入
第1行: 一个整数 N，木板的数量
第2行至第N+1行: 每行包含一个描述所需木板长度的整数
输出
第1行: 一个整数，约翰必须花费的最少金额来进行 N-1 次切割

3
8
5
8

34
提示
他想要把长度为21的木板切成长度为8、5和8的三块。
原始木板长度为8+5+8=21。第一次切割将花费21，应该用来将木板切成长度为13和8。第二次切割将花费13，应该用来将13切成8和5。这将花费21+13=34。如果将21切成16和5，第二次切割将花费16，总共为37（比34更多）。

*/
int main()
{
    std::cout << "Hello World!\n";
}

 